# 内置函数-序列操作

# all：判断可迭代对象的每个元素是否都为True值
all(())  # 参数是空的位true
b = all([0, 1, 2])
b1 = all([3, 1, 2])
print(b, b1)  # false true
# any：判断可迭代对象的元素是否有为True值的元素
any1 = any([])  # 空的是false
any2 = any([0, 0])
any3 = any([0, 1, 2])
print(any1, any2, any3)  # false false true
# filter：使用指定方法过滤可迭代对象的元素
a = list(range(1,10))
f = filter(lambda x: x % 2 == 1, a)  # 过滤出列表中的奇数
for i in f:
    print(i)  # 1,3,5,7,9
# map：使用指定方法去作用传入的每个可迭代对象的元素，生成新的可迭代对象
m1 = map(lambda x: x + 1, [1, 2, 3, 4])
print(list(m1))  # [2, 3, 4, 5]
# next：返回可迭代对象中的下一个元素值
a = iter('abcd')
print(next(a))  # a
# reversed：反转序列生成新的可迭代对象
r1 = reversed(range(5))
for i in r1:
    print(i)  # 4,3,2,1,0  反转
# sorted：对可迭代对象进行排序，返回一个新的列表
s = [4, 3, 5, 6, 7, 2]
s1 = sorted(s)
print(s1)  # [2, 3, 4, 5, 6, 7]
s2 = ['a','b','d','c','B','A']
sorted(s2,key = str.lower)  # 转换成小写后再排序，'a'和'A'值一样，'b'和'B'值一样
# zip：聚合传入的每个迭代器中相同位置的元素，返回一个新的元组类型迭代器
x = [1, 2, 3] # 长度3
y = [4, 5, 6, 7, 8] # 长度5
z = list(zip(x, y))  # 取最小长度3
print(z)  # [(1, 4), (2, 5), (3, 6)]
